home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
BBS Toolkit
/
BBS Toolkit.iso
/
windows
/
xmdmdlp.zip
/
XMODEM.H
< prev
next >
Wrap
C/C++ Source or Header
|
1992-05-15
|
6KB
|
148 lines
typedef struct tagPROTOSET{
LPSTR dwnload; // pointer to download dir
LPSTR upload; // pointer to upload dir
BYTE FAR *aspfxfer; // pointer to aspect file xfer flag
BYTE should_gif; // user wants gif files
BYTE xfer_dup_new; // duplicate new files
BYTE xfer_del_aborts; // delete aborts
BYTE xfer_relaxed; // relaxed timing
LPSTR bigbuff; // fixed pointer to first 10240 bytes of hPBits
LPSTR bigptr; // variable pointer to bigbuf bytes
LPSTR cbuff; // cbuff = bigbuff+10240, fixed pointer to last 1033 bytes of hPBits
int bdiag; // flag set if XFER status dialog box is desired
HWND hDlg1; // handle to XFER status dialog box
int hCommFile; // handle to open xfer file
LPSTR fileptr; // pointer to file data in hCommFile
WORD fdate; // DOS file date format of hCommFile
WORD fftime; // DOS file time format of hCommFile
char szRcvFile[20]; // Filename of received file (all but b-plus)
char XferFile[128]; // full pathname received file ( b-plus)
char szFullPath[128]; // full pathname for every protocol
char szTempDir[128];
char szTempName[20]; // temp filename, used in ShowXferBox
int errorcnt; // number of errors occured during xfer
int nackcount; // number of time nack txed or recieved during xfer
int blocksdone; // number of record blocks xfered
int bCancel; // Flag for user desire to cancel xfer
DWORD xwaittime; // timeout period for protocol xfers
int xcount; // number of rcved record bytes on xfer
DWORD flen; // total expected bytes of received file
long tflen;
DWORD runcnt; // total bytes of existing file, for calulating xfer rate (runcnt-tflen) is used
int rec_len; // length of record
int rec_no; // current rec_no being xfered
int (FAR PASCAL *FlushCommW)(int,int);
int (FAR PASCAL *ReadCommW)(int, LPSTR, int);
int (FAR PASCAL *WriteCommW)(int, LPSTR, int);
int (FAR PASCAL *GetCommErrorW)(int);
int (FAR PASCAL *SetCommBreakW)(int);
int (FAR PASCAL *ClearCommBreakW)(int);
int (FAR PASCAL *SetCommStateW)(DCB FAR *);
int (FAR PASCAL *GetCommStateW)(int, DCB FAR *);
int (FAR PASCAL *EscapeCommFunctionW)(int, int);
int (FAR PASCAL *UngetCommCharW)(int, char);
void (FAR PASCAL *EndXfer)(void); // End of xfer
int (FAR PASCAL *FeedDisplay)(BYTE); // Feed gif viewer a byte
void (FAR PASCAL *startgif)(void); // Start gif viewer
void (FAR PASCAL *ShowXferBox)(int); // Display file xfer status box
void (FAR PASCAL *TimeToGo)(void); // Update time of xfer in xfer status box
void (FAR PASCAL *StatusLineDirect)(LPSTR); // Statusline funtion call
int setup;
char dll_auto[12];
//char temp[66];
int datalen;
int Aborting;
DWORD no_char_wait;
int retries;
int pcstate;
int bbegin;
int end_record;
int bpos;
BYTE crc;
int rcnt;
char temp[45];
}PROTOSET;
typedef struct tagMAIN{
HWND hWnd; // Handle to rghWnd[MAINWIN]
HANDLE hCid; // Handle to Open Comm Port
COMSTAT comstat; // open comm status
DCB dcb; // DCB of open comm port
int gifstate; // switch state for online gif viewer
HWND hSTATUSWnd; // Handle to Status window
char szTempName[128]; // temp filename, used in ShowXferBox
}MAIN;
typedef struct ADVANCEDSET
{
UINT fRcvFileSelect :1; // default 0
UINT fSendFileSelect :1; // default 0
UINT fRecLength128 :1; // default 0
UINT fChecksum :1; // default 0
UINT fDummy :4; // default 0
} ADVANCEDSET;
BOOL FAR PASCAL LibMain(HANDLE,WORD,WORD,LPSTR );
WORD FAR PASCAL GET_DLL_CAPS( LPSTR );
void FAR PASCAL ADVANCED_DLL( PROTOSET FAR *, MAIN FAR *, HWND, LPSTR );
BOOL FAR PASCAL STARTDLL_XFER( PROTOSET FAR *, MAIN FAR *, HWND, LPSTR, int, int );
int FAR PASCAL DLL_XFER( PROTOSET FAR *, MAIN FAR *, HWND, LPSTR, int );
void FAR PASCAL WEP(int);
BOOL FAR PASCAL SetupDlgProc( HWND, WORD, WORD, LONG );
void RXING(void);
void WAITACK(void);
void NOCHAR(void);
void StartXRecord(int, LPSTR);
int WaitingForAck(void);
int GetXRecord(void);
BOOL MoreCharacters(void);
void ymodem_tx(void);
void End_It(int);
void StatusLine(WORD,LPSTR);
void LastError(int);
BOOL FileRxTX(int, LPSTR);
extern FAR PASCAL getftime( int );
extern FAR PASCAL getfdate( int );
#define SOH 1
#define STX 2
#define EOT 4
#define ACK 6
#define NAK 21
#define CANCEL 24
#define IDX_WAITACK 1
#define IDX_ACK 2
#define IDX_TERMINATE 3
#define IDX_NOCHAR 4
#define IDX_EOT 5
#define IDX_RXING 6
#define IDX_TXING 7
#define ID_ERR 300
#define ID_BLKNO 301
#define ID_PERCENT 302
#define ID_UARTERR 303
#define ID_FILENAME 305
#define IDS_LASTERROR 1300
#define IDS_SETUP 1500
// dll protocol capabilities
#define DLL_CAP_SHOWXFER 0x0020
#define DLL_CAP_MULTISEND 0x0002
#define DLL_CAP_AUTODOWNLOAD 0x0001
#define DLL_CAP_PWOPENFILE 0x0004
#define DLL_CAP_RCVNEEDNAME 0x0008
#define DLL_CAP_ADVANCED 0x0080
#define ASP_PROT_SUCCESS 2
#define ASP_PROT_FAIL 3